import {
	img_upload
} from '@/common/config'
import uploadFileServer from '@/common/uploadFile.js'
export default {
	openCanvas(text) {
		// 获取 Canvas 组件的上下文对象
		const ctx = uni.createCanvasContext('canvas', this);

		// 蓝色底色
		ctx.beginPath();
		ctx.rect(0, 0, 375, 300); // 注意高度改为300px
		ctx.setFillStyle('#112858');
		ctx.fill();

		// 计算字体大小和位置
		ctx.setFontSize(18);
		ctx.setFillStyle('#ffffff');
		ctx.setTextAlign('left');
		ctx.setTextBaseline('middle');
		let lineHeight = 20; // 每行的高度
		let maxWidth = 325; // 每行的最大宽度
		// 绘制上部文字
		// 分割文本到多行
		let lines = [];
		let currentLine = '';
		let totalChars = 0;
		
		if (text.length > 100) {
			text = text.substring(0,100) + '...';
		}
		for (let i = 0; i < text.length; i++) {
			let testLine = currentLine + text[i];
			let metrics = ctx.measureText(testLine);
			let testWidth = metrics.width;
			if (testWidth > maxWidth && i > 0) {
				lines.push(currentLine);
				currentLine = text[i];
				totalChars = currentLine.length;
			} else {
				currentLine = testLine;
			}
		}
		if (currentLine !== '') {
			lines.push(currentLine);
		}

		// 绘制分割后的文本
		let y = 80; // 开始绘制的位置
		lines.forEach(line => {
			ctx.fillText(line, 20, y);
			y += lineHeight;
		});

		// 定义按钮位置和尺寸
		const buttonY = 300 - 50 - 40; // 距离底部50px，按钮高度40px
		const buttonX = 20; // 左侧边距20px
		const buttonWidth = 375 - 2 * 20; // 减去两侧边距
		const buttonHeight = 40;

		// 绘制按钮的白色边框
		ctx.beginPath();
		ctx.rect(buttonX, buttonY, buttonWidth, buttonHeight);
		ctx.setStrokeStyle('#ffffff');
		ctx.setLineWidth(2);
		ctx.stroke();

		// 在按钮内绘制文字
		ctx.setFillStyle('#ffffff');
		ctx.setFontSize(16);
		ctx.setTextAlign('center');
		ctx.setTextBaseline('middle');
		ctx.fillText('点击查看', buttonX + buttonWidth / 2, buttonY + buttonHeight / 2);
		
		// 新增一行文字的位置
		const newLineY = buttonY + buttonHeight + 10; // 按钮下方10px开始绘制新行文字
		ctx.setFontSize(14); // 可以调整字体大小
		ctx.fillText('www.fupanai.com', buttonX + buttonWidth / 2, buttonY + buttonHeight + 45 / 2); // 在按钮下方绘制新行文字

		// 结束绘制并提交到画布
		ctx.draw();
	},
	async saveCanvas(text) {
		this.openCanvas(text)
		const [error,success] = await uni.canvasToTempFilePath({
				x: 0,
				y: 0,
				width: 375,
				height: 560,
				canvasId: 'canvas'
			},
			this
		)
		if(success){
			const res = await uploadFileServer.uploadFile(img_upload, success.tempFilePath)

			return res.data.fullurl
		}
	}
};